package com.tanglongan.designPattern.dp08_composite.demo01;

/**
 * 透明组合模式把所有公共方法都定义在Component中，这样客户端就不需要区分操作对象是叶子节点还是树枝节点；但是，叶子节点会继承一些它不需要（管理子类操作的方法）的方法，这与设计模式的接口隔离原则相违背。
 */
public class Client {


    public static void main(String[] args) {
        System.out.println("====================透明组合模式===========================");

        CourseCompoent java = new Course("Java入门课程", 8280);
        CourseCompoent ai = new Course("人工智能", 5000);
        CoursePackage coursePackage = new CoursePackage("Java架构师课程", 2);

        CourseCompoent design = new Course("Java设计模式", 1500);
        CourseCompoent source = new Course("源码分析", 2000);
        CourseCompoent softSkill = new Course("软技能", 2300);

        coursePackage.addChild(design);
        coursePackage.addChild(source);
        coursePackage.addChild(softSkill);

        CourseCompoent catalog = new CoursePackage("课程主目录", 1);
        catalog.addChild(java);
        catalog.addChild(ai);
        catalog.addChild(coursePackage);

        catalog.print();
    }

}
